package net.bitacademy.java22.service;

import net.bitacademy.java22.domain.ProfileDAO;
import net.bitacademy.java22.domain.ProfileVO;
import android.content.Context;
import android.media.AudioManager;
import android.util.Log;

public class HwHandler extends Trigger {

	Context context;

	public HwHandler(Context context) {
		this.context = context;
	}
	
	// 작성자 : 이현우
	// 내용 : 프로필에 현재값 저장하기
	// 마지막 업데이트 날짜 : 2012-3-12
	public void setCurrent() {
		ProfileVO pvo = new ProfileVO();
		ProfileDAO pdao = new ProfileDAO(context);
		int volume = Trigger.mAm.getStreamVolume(AudioManager.STREAM_RING);
		int vibrate = Trigger.mAm.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER);

		// 블루, 와파 둘다 켜져있으면 true 꺼져있으면 false
		boolean bluetooth = Trigger.mBluetoothAdapter.isEnabled();
		boolean wifi = Trigger.wifiManager.isWifiEnabled();

		if (vibrate == 1)
			pvo.setVibration("On");
		else
			pvo.setVibration("Off");

		pvo.setSound(volume);
		pvo.setWifi2(wifi);
		pvo.setBluetooth2(bluetooth);
		pvo.setHwflag("On");
		Log.d("currentSetValue", "currentSetValue");

		pdao.setCurrentHW(pvo);
	}
	
	// 작성자 : 이현우
	// 내용 : 프로필에 저장된 하드웨어 세팅하기
	// 마지막 업데이트 날짜 : 2012-3-12
	public void goHardwareSetting(ProfileVO pvo) {
		
		String flag = pvo.getHwflag();
		Log.d("pascalEngineStream", "in goHardwareSetting, flag = "+flag);
		if(flag.equals("On"))
		{
			Log.d("pascalEngineStream", "checked flag and go to setHardwareSetting");
			int sound;
			String vibration;
			String wifi;
			String bluetooth;
			
			sound = pvo.getSound();
			Log.d("pascalEngineStream", ""+Integer.toString(sound));
			vibration = pvo.getVibration();
			Log.d("pascalEngineStream", "vibration"+vibration);
			wifi = pvo.getWifi();
			Log.d("pascalEngineStream", "wifi"+wifi);
			bluetooth = pvo.getBluetooth();
			Log.d("pascalEngineStream", "bluetooth"+bluetooth);
			
		
			// 진동이 On인 경우
			if ("On".equals(vibration)) {
				if (sound == 0) {
					Log.d("sound", "무음진동");
					Trigger.mAm.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
					Trigger.mAm.setVibrateSetting(0, 1);
				} else {
					Log.d("sound", "소리진동");
					Trigger.mAm.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
					Trigger.mAm.setVibrateSetting(0, 1);
					Trigger.mAm.setStreamVolume(AudioManager.STREAM_RING , sound, AudioManager.FLAG_PLAY_SOUND);
				}
			} else { // 진동이 Off인 경우
				if (sound == 0) {
					Log.d("sound", "무음");
					Trigger.mAm.setRingerMode(AudioManager.RINGER_MODE_SILENT);
				} else {
					Log.d("sound", "소리");
					Trigger.mAm.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
					Trigger.mAm.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
					Trigger.mAm.setStreamVolume(AudioManager.STREAM_RING , sound, AudioManager.FLAG_PLAY_SOUND);
				}
			}
		
			// 셋팅
			if ("On".equals(bluetooth)) {
				Trigger.mBluetoothAdapter.enable();
			} else {
				Trigger.mBluetoothAdapter.disable();
			}
	
			if ("On".equals(wifi)) {
				Trigger.wifiManager.setWifiEnabled(true);
			} else {
				Trigger.wifiManager.setWifiEnabled(false);
			}
		}
	}
	
	

//	public void HWsetting(String startId) {
//
//		EventDAO edao = new EventDAO(context);
//		ProfileVO pvo = new ProfileVO();
//		pvo = edao.getHwsetting2(startId);
//
//		// 셋팅값 가져오기
//		int sound = pvo.getSound();
//		String vibration = pvo.getVibration();
//		String bluetooth = pvo.getBluetooth();
//		String wifi = pvo.getWifi();
//
//		String sound1 = Integer.toString(sound);
//		Log.d("HWsetting", "셋팅값 가져오기");
//		Log.d("HWsetting", vibration);
//		Log.d("HWsetting", bluetooth);
//		Log.d("HWsetting", wifi);
//		Log.d("HWsetting", sound1);
//
//		// 셋팅
//		if (bluetooth.equals("On")) {
//			bluetoothOn();
//		} else {
//			bluetoothOff();
//		}
//
//		if (wifi.equals("On")) {
//			wifiOn();
//		} else {
//			wifiOff();
//		}
//		// 진동이 On인 경우
//		if ("On".equals(vibration)) {
//			if (sound == 0) {
//				vibrate();
//			} else {
//				sound();
//				volume(sound);
//				mAm.setVibrateSetting(0, 1);
//			}
//		} else { // 진동이 Off인 경우
//			if (sound == 0) {
//				mute();
//			} else {
//				sound();
//				volume(sound);
//			}
//		}
//	}
//
//	public void restore(String endId) {
//		ProfileVO pvo = null;
//		ProfileDAO pdao = new ProfileDAO(context);
//
//		Log.d("restore", "restore()");
//		// DB에서 HW복원해야할 값 꺼내기
//		pvo = pdao.restore(endId);
//
//		// 세부 값 지정(따로 할 필요없으면 복원실행 코드에 직접넣어야 함)
//		int sound = pvo.getSound();
//		String vibration = pvo.getVibration();
//		String bluetooth = pvo.getBluetooth();
//		String wifi = pvo.getWifi();
//
//		Log.d("vibration", vibration);
//		Log.d("bluetooth", bluetooth);
//		Log.d("wifi", wifi);
//
//		// 복원 실행
//		if (bluetooth.equals("On")) {
//			bluetoothOn();
//		} else {
//			bluetoothOff();
//		}
//
//		if (wifi.equals("On")) {
//			wifiOn();
//		} else {
//			wifiOff();
//		}
//		// 진동이 On인 경우
//		if ("On".equals(vibration)) {
//			if (sound == 0) {
//				vibrate();
//			} else {
//				sound();
//				volume(sound);
//				mAm.setVibrateSetting(0, 1);
//			}
//		} else { // 진동이 Off인 경우
//			if (sound == 0) {
//				mute();
//			} else {
//				sound();
//				volume(sound);
//			}
//		}
//	}
//
//	public void currentSetValue(String id) {
//		ProfileVO pvo = new ProfileVO();
//		ProfileDAO pdao = new ProfileDAO(context);
//		int volume = mAm.getStreamVolume(AudioManager.STREAM_RING);
//		int vibrate = mAm.getVibrateSetting(0);
//
//		// 블루, 와파 둘다 켜져있으면 true 꺼져있으면 false
//		boolean bluetooth = mBluetoothAdapter.isEnabled();
//		boolean wifi = wifiManager.isWifiEnabled();
//
//		if (vibrate == 1)
//			pvo.setVibration("On");
//		else
//			pvo.setVibration("Off");
//
//		pvo.setSound(volume);
//		pvo.setWifi2(wifi);
//		pvo.setBluetooth2(bluetooth);
//
//		Log.d("currentSetValue", "currentSetValue");
//
//		pdao.currentHW(id, pvo);
//	}
//
//	public void sound() {
//		Trigger.mAm.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
//	}
//
//	public void vibrate() {
//		Trigger.mAm.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
//	}
//
//	public void mute() {
//		Trigger.mAm.setRingerMode(AudioManager.RINGER_MODE_SILENT);
//	}
//
//	public void volume(int vol) {
//		Trigger.mAm
//				.setStreamVolume(AudioManager.STREAM_RING, vol, 0);
//	}
//
//	public void wifiOn() {
//		if (!Trigger.wifiManager.isWifiEnabled()) {
//			Trigger.wifiManager.setWifiEnabled(true);
//		} else {
//			Trigger.wifiManager.setWifiEnabled(false);
//		}
//	}
//
//	public void wifiOff() {
//		if (Trigger.wifiManager.isWifiEnabled()) {
//			Trigger.wifiManager.setWifiEnabled(false);
//		} else {
//			Trigger.wifiManager.setWifiEnabled(true);
//		}
//	}
//
//	public void bluetoothOn() {
//		if (!Trigger.mBluetoothAdapter.isEnabled()) {
//			Trigger.mBluetoothAdapter.enable();
//		} else {
//			Trigger.mBluetoothAdapter.disable();
//		}
//	}
//
//	public void bluetoothOff() {
//		if (Trigger.mBluetoothAdapter.isEnabled()) {
//			Trigger.mBluetoothAdapter.disable();
//		} else {
//			Trigger.mBluetoothAdapter.enable();
//		}
//	}
}
